//package com.rzx.mybackend.config.rabbitMQ;
//
//import com.rzx.mybackend.entity.RabbitMQLog;
//import com.rzx.mybackend.service.RabbitMQService;
//import jakarta.annotation.PostConstruct;
//import lombok.RequiredArgsConstructor;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.amqp.rabbit.connection.CorrelationData;
//import org.springframework.amqp.rabbit.core.RabbitTemplate;
//import org.springframework.stereotype.Component;
//
///**
// * RabbitConfirmCallback
// * rabbitMQ 消息确认配置处理类（用于验证消息是否被送到Rabbit服务器）
// * bean的生命周期回调（由于RabbitTemplate.ConfirmCallback这个类在起步依赖中，初始化时无法配置确认方法，所以需要通过bean的生命周期回调，来重新配置类，并注册到Srping容器）
// * @author renzhexian
// * @date 2025/7/24
// */
//@Component
//@RequiredArgsConstructor
//public class RabbitConfirmCallback implements RabbitTemplate.ConfirmCallback {
//
//    private static final Logger log = LoggerFactory.getLogger(RabbitConfirmCallback.class);
//
//    private final RabbitTemplate rabbitTemplate;
//
//    private final RabbitMQService rabbitMQService;
//
//
//    /*
//    bean的生命周期回调
//     */
//    @PostConstruct
//    public void init() {
//        rabbitTemplate.setConfirmCallback(this);
//    }
//
//    /*
//    确认消息是否成功发送到 rabbitMQ Broker
//    成功打印日志
//    失败进行重试
//     */
//    @Override
//    public void confirm(CorrelationData correlationData, boolean ack, String cause) {
//        if (ack) {
//            log.info("消息成功发送到 Broker，ID: {}", correlationData != null ? correlationData.getId() : "无 ID");
//        } else {
//            log.error("消息发送失败，ID: {}, 原因: {}", correlationData != null ? correlationData.getId() : "无 ID", cause);
//
//            // 如果correlationData为空，代表为重试消息，则不进行重试
//            if (correlationData == null) {
//                log.error("消息发送失败");
//                return;
//            }
//
//            // 获取失败消息ID
//            String msgId = correlationData.getId();
//
//            rabbitMQService.reytryMessage(msgId);
//
//        }
//    }
//}
